#include <UTFT.h>
#include "direction.h"
#include "mario.h"
#include <avr/pgmspace.h>
direction dir=right;
#define BUTTON_UP    1
#define BUTTON_LEFT  3
#define BUTTON_DOWN  4
#define BUTTON_RIGHT 7
#define BUTTON_OK    6

#define SDA 12
#define SCL 13
#define CS  9
#define RST 10
#define RS  11

#define MAX_RIGHT 112
#define MIN_LEFT 0

extern uint8_t SmallFont[];//原始文件在库文件的DefaultFonts.c中
//UTFT myGLCD(YYROBOT_TFT144,SDA,SCL,CS,RST,RS);  // Remember to change the model parameter to suit your display module!
UTFT* myGLCD = new UTFT(YYROBOT_TFT144,A2,A1,A5,A4,A3);

Mario* mario;
void setup()
{
  Serial.begin(9600);
  Serial.println("Game Start...");
  myGLCD->InitLCD();
  myGLCD->fillScr(0, 0, 0);
  Mario* mario = new Mario(myGLCD,16,32);
//  for(int i=0;i<8;i++)
//  {
//    myGLCD.drawBitmap (i*16, 96, 16, 16, grass);
//    myGLCD.drawBitmap (i*16, 112, 16, 16, mud); 
//  }
//  myGLCD.setColor(255,255,255);
//  myGLCD.drawBitmap (x, y, 16, 32, mario_1);
//  myGLCD.drawBitmap (0, 0, 16, 16, img);
}

void loop()
{
  mario->move(right);
//  if(digitalRead(BUTTON_RIGHT))
//  {
//    delay(50);
//    while(digitalRead(BUTTON_RIGHT))
//    {
//      if(digitalRead(BUTTON_UP))
//      {
//        delay(50);
//        if(digitalRead(BUTTON_UP))
//        {
//          jumpRight();
//        }
//      }
//      dir=right;
//      moveRight();
//    }
//  }
//  if(digitalRead(BUTTON_LEFT))
//  {
//    delay(50);
//    while(digitalRead(BUTTON_LEFT))
//    {
//      if(digitalRead(BUTTON_UP))
//      {
//        delay(50);
//        if(digitalRead(BUTTON_UP))
//          jumpLeft();
//      }
//      dir=left;
//      moveLeft();
//    }
//  }
//  if(digitalRead(BUTTON_UP))
//  {
//    delay(50);
//    while(digitalRead(BUTTON_UP))
//    {
//      if(dir==left)
//        jumpLeft();
//      else
//        jumpRight();
//    }
//  }
//  if(digitalRead(BUTTON_DOWN))
//  {
//    delay(50);
//    while(digitalRead(BUTTON_DOWN))
//    {
//      sitDown(dir);
//    }
//    if(dir==right)
//      myGLCD.drawBitmap (x, y, 16, 32, mario_1);
//    else
//      myGLCD.drawBitmap (x, y, 16, 32, mario_back_1);
//  }
//  if(x>=MAX_RIGHT)
//  {
//    x=MAX_RIGHT;
//  }
//  if(x<=MIN_LEFT)
//  {
//    x=MIN_LEFT;
//  }
}

//void moveRight()
//{
//  if(x>=MAX_RIGHT)
//  {
//    x=MAX_RIGHT;
//  }
//  myGLCD.drawBitmap (x, y, 16, 32, mario_1);
//  delay(10);
//  x++;
//  myGLCD.drawBitmap (x, y, 16, 32, mario_2);
//  delay(10);
//  x++;
//  myGLCD.drawBitmap (x, y, 16, 32, mario_1);
//  delay(10);
//}
//
//void moveLeft()
//{
//  if(x<=MIN_LEFT)
//  {
//    x=MIN_LEFT;
//  }
//  myGLCD.drawBitmap (x, y, 16, 32, mario_back_1);
//  delay(10);
//  x--;
//  myGLCD.drawBitmap (x, y, 16, 32, mario_back_2);
//  delay(10);
//  x--;
//  myGLCD.drawBitmap (x, y, 16, 32, mario_back_1);
//  delay(10);
//}
//
//void jumpLeft()
//{
//  for(int i=0;i<8;i++)
//  {
//    if(x<=MIN_LEFT)
//    {
//      x=MIN_LEFT;
//    }
//    x--;
//    y--;
//    myGLCD.drawBitmap (x, y, 16, 32, jump_back_1);
//    delay(10);
//  }
//
//  for(int i=0;i<16;i++)
//  {
//    x--;
//    y++;
//    if(x<=MIN_LEFT)
//    {
//      x=MIN_LEFT;
//    }
//    myGLCD.drawBitmap (x, y, 16, 32, jump_back_2);
//    delay(1);
//  }
//  myGLCD.drawBitmap (x, y, 16, 32, mario_back_1);
//}
//
//void jumpRight()
//{
//  for(int i=0;i<16;i++)
//  {
//    if(x>=MAX_RIGHT)
//    {
//      x=MAX_RIGHT;
//    }
//    x++;
//    y--;
//    myGLCD.drawBitmap (x, y, 16, 32, jump_1);
//    delay(10);
//  }
//
//  for(int i=0;i<16;i++)
//  {
//    x++;
//    y++;
//    if(x>=MAX_RIGHT)
//    {
//      x=MAX_RIGHT;
//    }
//    myGLCD.drawBitmap (x, y, 16, 32, jump_2);
//    delay(1);
//  }
//  myGLCD.drawBitmap (x, y, 16, 32, mario_1);
//}
//
//void sitDown(direction direct)
//{
//  if(direct==right)
//  {
//    myGLCD.drawBitmap (x, y, 16, 32, sit_down);   
//  }
//  else
//    myGLCD.drawBitmap (x, y, 16, 32, sit_down_back);
//  delay(10);
//}
